
public class Main1 {
    public static void main(String[] args) {
        int[] nums = {1,3,5,4,7};
        System.out.println(lengthOfLIS2(nums));
    }




    /*
    * 最长上升子序
    * 输入: [10,9,2,5,3,7,101,18]
    * 输出: 4
    * 解释: 最长的上升子序列是 [2,3,7,101]，它的长度是 4。
    * */
    public static int lengthOfLIS(int[] nums) {
        if(nums == null || nums.length == 0) return 0;
        int[] dp = new int[nums.length];
        dp[0] = 1;
        int res = 1;
        for (int i = 1; i < nums.length; i++) {
            dp[i] = 1;
            for (int j = i-1; j >= 0 ; j--) {
                if(nums[i] > nums[j]){
                    dp[i] = Math.max(dp[i],dp[j]+1);
                }
            }
            res = Math.max(res,dp[i]);
        }
        return res;
    }


    /*
    * 最长连续递增子序
    * 输入: [1,3,5,4,7]
    * 输出: 3
    * 解释: 最长连续递增序列是 [1,3,5], 长度为3。
    * */
    public static int lengthOfLIS2(int[] nums) {
        if(nums == null || nums.length == 0) return 0;

        int[] dp = new int[nums.length];
        dp[0] = 1;
        int res = 1;
        for (int i = 1; i < nums.length; i++) {
            if(nums[i] > nums[i-1]){
                dp[i] = dp[i-1] + 1;
            }else{
                dp[i] = 1;
            }
            res = Math.max(res,dp[i]);
        }
        return res;
    }

}
